const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}

 /* 
    自定义函数，用于将自定义格式的时间转为几分钟前、几小时前的格式
    使用方法：this.getTimer([2021, 5, 6, 10, 16, 12]) 
  */
//  getTimer: function(listTime) {
  function getTimer(listTime) {
    var stringTime=`${listTime[0]}-${listTime[1]}-${listTime[2]} ${listTime[3]}:${listTime[4]}:${listTime[5]}`
    var minute = 1000 * 60
    var hour = minute * 60
    var day = hour * 24
    var week = day * 7
    var month = day * 30
    var time1 = new Date().getTime()  //当前的时间戳
    var time2 = Date.parse(new Date(stringTime))  //指定时间的时间戳
    var time = time1 - time2
  
    var result = null
    if (time < 0) {
        alert("设置的时间不能早于当前时间！")
    } else if (time / month >= 1) {
        result = parseInt(time / month) + "月前"
    } else if (time / week >= 1) {
        result = parseInt(time / week) + "周前"
    } else if (time / day >= 1) {
        result = parseInt(time / day) + "天前"
    } else if (time / hour >= 1) {
        result = parseInt(time / hour) + "小时前"
    } else if (time / minute >= 1) {
        result = parseInt(time / minute) + "分钟前"
    } else {
        result = "刚刚"
    }
    return result;
  }
  
  function dateFormat(fmt, date) {
    let ret
    const opt = {
      'Y+': date.getFullYear().toString(), // 年
      'm+': (date.getMonth() + 1).toString(), // 月
      'd+': date.getDate().toString(), // 日
      'H+': date.getHours().toString(), // 时
      'M+': date.getMinutes().toString(), // 分
      'S+': date.getSeconds().toString() // 秒
      // 有其他格式化字符需求可以继续添加，必须转化成字符串
    }
    for (const k in opt) {
      ret = new RegExp('(' + k + ')').exec(fmt)
      if (ret) {
        fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
      }
    }
    return fmt
  }

module.exports = {
  formatTime,
  getTimer,
  dateFormat
}
